package me.huanmeng.heater.plugin;

import com.ericrabil.yamlconfiguration.configuration.file.FileConfiguration;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.io.File;

/**
 * 2021/9/29<br>
 * Heater<br>
 *
 * @author huanmeng_qwq
 */
public interface Plugin {
    /**
     * 获取插件数据文件夹
     * @return 插件数据文件夹
     */
    @NotNull
    File getDataFolder();

    /**
     * 保存配置文件
     * @see Plugin#getConfig()
     */
    void saveConfig();
    /**
     * 获取插件配置文件
     * 如果插件数据文件夹不存在
     * "config.yml"
     * 则返回null
     * @return 插件配置文件
     * @see Plugin#saveConfig
     */
    @Nullable
    FileConfiguration getConfig();

    /**
     * 获取插件配置文件
     * 如果插件数据文件夹不存在
     * "config.yml"
     * 则从classpath复制
     */
    void saveDefaultConfig();

    /**
     * 重载配置文件
     */
    void reloadConfig();
    void saveResource(String name,boolean replace);
    /**
     * 当这个插件被加载
     */
    void onLoad();
    /**
     * 当这个插件被启用
     */
    void onEnable();
    /**
     * 当这个插件被禁用
     */
    void onDisable();

    void setEnabled(boolean enabled);

    boolean isEnabled();
    PluginDescription getDescription();
}
